package com.cykj.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author 王宇
 * @CreateTime: 2025-05-16  14:51
 * @BelongsProject: jd_seckill
 * @BelongsPackage: com.cykj.dto
 * @description 统一格式发送给前端
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResponseDTO {
    private Integer code;       // 状态码   1为成功，-1失败
    private String msg;         // 提示文字
    private Object data;        // 返回的数据

    private static final Integer SUCCESS_CODE = 200;  // 成功的码
    private static final Integer ERROR_CODE = 404;    // 失败的码
    /**
     * @Description 有返回数据的成功方法
     * @param data
     * @return [data]
     */
    public static ResponseDTO success(Object data){
        return new ResponseDTO(SUCCESS_CODE, "success", data);
    }

    /**
     * @Description 无返回数据的成功方法
     * @param
     * @return []
     */
    public static ResponseDTO success(){
        return new ResponseDTO(SUCCESS_CODE, "success", null);
    }

    /**
     * @Description 有返回信息的成功方法
     * @param
     * @return []
     */
    public static ResponseDTO success(String message){
        return new ResponseDTO(SUCCESS_CODE, message, null);
    }

    /**
     * @Description 有返回信息和数据的成功方法
     * @param
     * @return []
     */
    public static ResponseDTO success(String message, Object data){
        return new ResponseDTO(SUCCESS_CODE, message, data);
    }

    /**
     * @Description 无返回错误信息的失败方法
     * @param
     * @return []
     */
    public static ResponseDTO error(){
        return new ResponseDTO(ERROR_CODE, "error", null);
    }

    /**
     * @Description 可以写回错误信息的失败方法
     * @param message
     * @return [message]
     */
    public static ResponseDTO error(String message){
        return new ResponseDTO(ERROR_CODE, message, null);
    }

    /**
     * @Description 可以写回错误码，错误信息的失败方法
     * @param errorCode, message
     * @return [message]
     */
    public static ResponseDTO error(Integer errorCode, String message){
        return new ResponseDTO(errorCode, message, null);
    }

    /**
     * @Description 可以写回错误码的失败方法
     * @param errorCode
     * @return [message]
     */
    public static ResponseDTO error(Integer errorCode){
        return new ResponseDTO(errorCode, "error", null);
    }

}
